home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
gfx
/
misc
/
gnuplot-3.7src.lha
/
gnuplot-3.7src
/
gnuplot-3.7.lha
/
gnuplot-3.7
/
NeXT
/
Controller.m
< prev
next >
Wrap
Text File
|
1998-04-15
|
5KB
|
232 lines
#import <defaults/defaults.h>
#import "Controller.h"
#import "gnuviewController.h"
#import "GnuView.h"
@implementation Controller
- (id) activeTerm
{
return activeTerm;
}
- appDidInit:sender
{
id prInfo;
NXRect *paperRect;
static NXDefaultsVector GnuTermDefaults = {
{"Width", "400"},
{"Height", "300"},
{"Backing", "Buffered"},
{NULL}
};
activeTerm = keyTerm = nil;
myConnection = [NXConnection registerRoot:self withName:"gnuplotServer"];
[myConnection runFromAppKit];
prInfo = [NXApp printInfo];
paperRect = (NXRect *) [prInfo paperRect];
[prInfo setOrientation:NX_LANDSCAPE andAdjust:YES];
[prInfo setHorizCentered:YES];
[prInfo setVertCentered:YES];
/* Get user Preferences */
NXRegisterDefaults("GnuTerm", GnuTermDefaults);
[DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Width") at:0];
[DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Height") at:1];
if (!strcmp(NXGetDefaultValue("GnuTerm","Backing"), "Buffered")) {
backing = NX_BUFFERED;
[useBufferedSwitch setState:YES];
}
else {
backing = NX_RETAINED;
[useBufferedSwitch setState:NO];
}
gvList = [[List new] initCount:10];
return self;
}
- newGnuTerm:sender
{
NXRect frame;
if ([gvList indexOf:keyTerm] != NX_NOT_IN_LIST) {
[[keyTerm window] getFrame: &frame];
NX_X(&frame) += 24;
NX_Y(&frame) -= 24;
}
else {
NX_WIDTH(&frame) = atof(NXGetDefaultValue("GnuTerm","Width"));
NX_HEIGHT(&frame) = atof(NXGetDefaultValue("GnuTerm","Height"));
NX_X(&frame) = 200;
NX_Y(&frame) = 350;
}
if ([NXApp loadNibSection: "gnuview.nib" owner: self] == nil) {
return nil;
}
// fprintf(stderr,"newGnuTerm: %g x %g\n",NX_WIDTH(&frame),NX_HEIGHT(&frame));
[[activeTerm window] setBackingType:backing];
[[activeTerm window] placeWindowAndDisplay: &frame];
[self setKeyTerm:activeTerm];
[gvList addObject:activeTerm];
++wcnt;
return activeTerm;
}
- setActiveTerm:(id) newTerm
{
if (activeTerm != nil) [activeTerm deactivate:self];
activeTerm = newTerm;
[activeTerm GVactivate:self];
return self;
}
- printPScodeInKey:sender
{
[[keyTerm gnuView] printPSCode:sender];
return self;
}
- setKeyTerm:newTerm
{
keyTerm = newTerm;
[NameField setStringValue:[[keyTerm window] title]];
[NameField selectText:self];
return self;
}
- setKeyTitle:sender
{
[[keyTerm window] setTitle:[NameField stringValue]];
[[NameField window] performClose:self];
return self;
}
- executePScode:(char *)PSstring termTitle:(char *)title
{
int i, cnt;
id test;
char buf[50];
//fprintf(stderr, "Request for window: %s\n", title);
if (*title) {
/* If the window exists, use it */
cnt = [gvList count];
for (i=0; i < cnt; ++i) {
test = [gvList objectAt:i];
if ( !strcmp([[test window] title], title)) {
if (test != activeTerm) [self setActiveTerm:test];
break;
}
}
/* O.K., it doesn't exist, what now? */
if (i == cnt) {
[self newGnuTerm:self];
[[activeTerm window] setTitle: title];
}
}
else {
if (activeTerm == nil) {
[self newGnuTerm:self];
sprintf(buf, "gnuplot %d", wcnt);
[[activeTerm window] setTitle: buf];
}
}
[[activeTerm window] makeKeyAndOrderFront: nil];
[[activeTerm gnuView] executePS:PSstring];
return activeTerm;
}
- termWillClose:sender
{
[gvList removeObject:sender];
if (activeTerm == sender) activeTerm =nil;
return self;
}
- setDefaultGTSize:sender
{
NXRect frame;
if (sender == useKeyButton) {
fprintf(stderr, "useKey\n");
if ([gvList indexOf:keyTerm] != NX_NOT_IN_LIST) {
[[keyTerm window] getFrame: &frame];
[DefaultSize setFloatValue:NX_WIDTH(&frame) at:0];
[DefaultSize setFloatValue:NX_HEIGHT(&frame) at:1];
}
}
NXWriteDefault("GnuTerm", "Width", [DefaultSize stringValueAt:0]);
NXWriteDefault("GnuTerm", "Height", [DefaultSize stringValueAt:1]);
fprintf(stderr, "setDefaultGTSize: %s x %s\n",
[DefaultSize stringValueAt:0],[DefaultSize stringValueAt:1]);
return self;
}
- setUseBuffered:sender
{
if ([sender state] == YES) {
backing = NX_BUFFERED;
NXWriteDefault("GnuTerm", "Backing", "Buffered");
}
else {
backing = NX_RETAINED;
NXWriteDefault("GnuTerm", "Backing", "Retained");
}
[[activeTerm window] setBackingType:backing];
return self;
}
- closeAll:sender
{
while([gvList count]) [[[gvList objectAt:0] window] performClose:self];
return self;
}
- miniaturizeAll:sender
{
int i, cnt;
cnt = [gvList count];
for (i=0; i < cnt; ++i)
[[[gvList objectAt:i] window] performMiniaturize:self];
return self;
}
@end